GRAP Framework Basics
RCS Major Process
  1
    Accept Bus and generate Task List
      Bus
        Task
          Load container
            Station
            Location
          Place container
            Sta
            Loc
        Task
          L
          P
        Task
          L
          P
        ...
  2
    Allocate
      Query All Task List From Bus
        Task
          Sta To Loc
        Task
          Loc To Sta
        Task
          Loc To Loc
        Task
        Task
        Task
        AGV 1
        AGV 2
        AGV 3
  3
    Calculate Segment List
      AGV 1
        Task
          Load
          Place
        Task
          L
          P
        Task
          L
          P
        Task
          L
          P
      AGV 2
      AGV 3
  4
    Addressing And Traffic
      Segment
        algorithms
          Build Path Way
            Segment
              algorithms
                Build Path Way
                  Segment
                    algorithms
                      Build Path Way
  5
    About How to Build Action List
      Turn
      Move Straight
      Move Backwark
      Lift
      Load
      Place
      Charge
      Permutation and Combination
        Action List
  6
    Publish AGV Commands
      publish to Gateway
        AGV Complete
  Question 1
    不同类型的任务，是否要分配给同一台AGV；
或者同一台AGV只分配相同类型的任务。
  To be: L L L P P P
    Segment List
      Load
      L
      L
      L
      Place
      P
      P
      P
  Change 1
    当前逻辑：AGV上报任务完成后，解析下一个Segment，此过程持续发生，不中断，直到没有可执行的Segment。
需要修改为：当发现AGV作业完成后，上报点位的条码正好为滚筒输送线的作业条码时，则不立即执行Next Segment，而是等待一段时间，且当前状态与 Allocate 方法同步。
      Inbound
        目前暂无影响，Load Segment自动装载进最新Segment List
      outbound
        修改原来station status的概念
        等待一段时间，等滚筒输送线给到可以再放货的信号位时，再执行下一个Place Segment
          question：如果一直给不到信号位（网络异常、输送线故障、暂存位溢出等原因），需要如何处理
      timeout
        影响
          timeout设置的越大
            inbound
              单AGV背篓装载的越多，但对于单个料箱来说，入库
            outbound
              滚筒输送线的容错率越高
          timeout设置的越小
            inbound
              对于单个料箱来说，入库的时效更短。但可能发生滚筒输送线快给到信号位时，AGV刚离开，导致AGV的利用率下降，AGV的装载率降低
            outbound
              滚筒输送线的容错率越低
        关键参数
          输送线节拍（是否必须大于此项，否则出库无法完结）
          AGV背篓任务数
          AGV停留在station的时长
          是否存在紧急任务
          等等
  Change 2
    当前逻辑：通过计算每一辆AGV的权重值，来分配任务给合适的AGV。权重值计算公式：分配的背篓任务数 + 当前位置到目标位置的距离 + 将要进入目标巷道的AGV数量。
需要修改为：
      Inbound
        当前入库站为滚筒输送线且对应的地码上存在AGV，且此AGV上一个任务为此station的入库任务，且此AGV的背篓任务数有空余，则直接派发给当前AGV。
          绕过 “3.Calculate Segment List” ，直接生成Load Segment和Place Segment
            Load Segment
              Load Segment 插入到AGV当前 Segment List 的下一个作业节点
            Place Segment
              Place Segment 插入到 List 的下标位置，需要扫描所有 Place Segment 的条码定位，计算出最合适的下标，防止AGV放货时，行走冗余路径
      outbound
        多个出库任务分配AGV，如果出库的station为滚筒输送线，则尽量把这些任务分配给同一辆AGV
          需要考虑，虽然Destination Station相同，但是起始库位会不会相隔较远，如果相隔较远，会不会分配给距离近的AGV更合适，次逻辑同样适用于Inbound
  Question 3
    AGV在滚筒输送线前等待的时间，是否能够做避让等行为操作？
  Question 2
    如何平衡Allocate给AGV分配的数量，和滚筒输送线后再分配AGV的数量